package com.FH.util;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 图片处理公共类
 * @author jinweizhe 2015-09-09
 *
 */
public class FileProcess {
	
	/**
	 * base64转图片方法
	 * @param imgStr 图片base64字符串
	 * @param filePath 存储路径
	 * @return
	 */
	public static boolean GenerateImage(String imgStr,String filePath){
	
		try{
			
			BASE64Decoder decoder = new BASE64Decoder();
			
			if(!imgStr.isEmpty()){
				//base64解码
				byte[] b = decoder.decodeBuffer(imgStr);
				
				for(int i = 0;i<b.length;i++){
					if(b[i]<0){
						//调整异常数据
						b[i] += 256;
					}
				}
				//生成图片
				OutputStream out = new FileOutputStream(filePath);
				out.write(b);
				out.flush();
				out.close();
				return true;
			}
			else{
				return false;
			}
			
		}catch(Exception e){
			
			return false;
		}
	}
	
	/**
	 * 图片转换为base64字符串
	 * @param filePath 图片路径
	 * @return
	 */
	public static String GetImageStr(String imagefilePath) {
		
		byte[] data = null;
		//读取图片字节数组
		try{
			InputStream in = new FileInputStream(imagefilePath);
			data = new byte[in.available()];
			in.read(data);
			in.close();
			
			//图片转base64字符串
			BASE64Encoder encoder = new BASE64Encoder();
			String imgStr = encoder.encode(data);
			return imgStr;
			
		}catch(Exception e){
			e.printStackTrace();
		}
		return "";
	}
	
	/**
	 * 增加日志
	 * @return
	 * @author syf 2015-09-12
	 */
	public static int newlog (String loginfo)
	{
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式
		String od = "/tmp/log/";
		File fmo=new File(od);
		if(!fmo.exists()){
			fmo.mkdirs();
			fmo.setWritable(true, false);
		}
		File file = new File(od+df.format(new Date())+".txt");
	    try {
	        if (!file.exists())
	        {
	            boolean o = file.createNewFile();
	            System.out.println(o);
	        }
	        FileOutputStream fos = new FileOutputStream(od+df.format(new Date())+".txt",true);//true表示在文件末尾追加
	        loginfo = "【"+loginfo+"】"+"\r\n";//在windows中换行是\n\r,\n表示换行   在unix和Linux中换行是\n
	        fos.write(loginfo.getBytes());  
	        fos.close();//流要及时关闭  
	        return 1;
	    } catch (IOException e) {
	        e.printStackTrace();
	        return 0;
	    }
	    
	}
	
	
	
	private static void ele ()
	{
//		Connection con = null;
//        String sql = "{call test(?,?)}"; 
//        CallableStatement cs =null;
//        try {
//        	con = hrDs.getConnection();
//            cs = con.prepareCall(sql); //调用存储过程
//        	cs.setString(1, "www"); 
//        	cs.registerOutParameter(2, Types.VARCHAR); //
//        	cs.executeQuery();
//            String goods_name = cs.getString(2); 
//            System.out.println(goods_name);
//        } catch (SQLException e) {       
//            e.printStackTrace();
//        }finally{  
//            if (con != null) try { con.close(); } catch (Exception e) {System.out.println(e.getMessage());}  
//        }  
	}
	
}
